//
//  ViewController.m
//  模糊查询
//
//  Created by My Mac on 2017/2/17.
//  Copyright © 2017年 My Mac. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()<UITableViewDelegate,UITableViewDataSource,UISearchBarDelegate>
//定义UITableView属性
@property(nonatomic,strong) UITableView *tableView;
//定义UISearchBar属性
@property(nonatomic,strong) UISearchBar *searchBar;
//定义固定数据的数组
@property(nonatomic,strong) NSArray *fixedArr;
//定义显示数据的数组
@property(nonatomic,strong) NSMutableArray *displayArr;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //初始化控件
    [self initViews];
    //初始化数据
    [self initDatas];
}
#pragma mark - 初始化控件
-(void)initViews
{
    //设置视图的标题
    self.title = @"搜索查询";
    //初始化搜索框
    _searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 64, [UIScreen mainScreen].bounds.size.width, 40)];
    //提示文字
    _searchBar.placeholder = @"搜索";
    //协议的代理者
    _searchBar.delegate = self;
    //添加到视图上
    [self.view addSubview:_searchBar];
    
    //初始化TableView
    _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 104, self.view.bounds.size.width, self.view.bounds.size.height-104) style:UITableViewStylePlain];
    //协议的代理者
    _tableView.delegate = self;
    _tableView.dataSource = self;
    //去掉无内容cell的分割线
    _tableView.tableFooterView = [[UIView alloc]init];
    //添加到视图
    [self.view addSubview:_tableView];
    
    //处理键盘弹出事件
    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
    [center addObserver:self selector:nil name:UIKeyboardDidShowNotification object:_searchBar];
}

#pragma mark - 初始化数据
-(void)initDatas
{
    //设置固定数据
    _fixedArr = @[@"红楼梦",@"西游记",@"水浒传",@"三国演义",@"简·爱",@"两只老虎",@"格林童话",@"安徒生童话",@"小南回来了",@"我的心",@"从你的全世界路过",@"飘",@"黄河大合唱",@"iOS开发与实战",@"Java从入门到精通",@"不要打扰我",@"你的名字",@"福尔摩斯探案集",@"天气预报",@"校花的贴身高手",@"大头儿子小头爸爸",@"黑色星期天",@"美好的未来",@"我好想你"];
    //设置展示的初始数据
    _displayArr = [NSMutableArray arrayWithArray:_fixedArr];
}

#pragma mark ⭐️ TableView数据源方法 ⭐️

#pragma mark - 当tableView滚动时，回收键盘
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    [self.view endEditing:YES];
}

#pragma mark - 多少行
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return _displayArr.count;
}
#pragma mark - cell的内容
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //获取_displayArr数组中的元素
    NSString *strItem = _displayArr[indexPath.row];
    //初始化cell,注册可重用ID
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    //如果为空,就初始化cell
    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cell"];
    }
    //设置cell的标题
    cell.textLabel.text = strItem;
    //设置cell的细节
    /*
     在数组中通过元素获取相应的位置
     [_displayArr indexOfObject:strItem]
     */
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%02lu",[_displayArr indexOfObject:strItem] + 1];
    //设置cell点击效果,为None
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;
}
#pragma mark - cell的点击事件
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //获取_displayArr数组中的元素
    NSString *strItem = _displayArr[indexPath.row];
    //通过元素获取相应的位置
    NSString *titleNum = [NSString stringWithFormat:@"%02lu",[_displayArr indexOfObject:strItem] + 1];
    //初始化弹窗
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:titleNum message:strItem preferredStyle:UIAlertControllerStyleAlert];
    //弹窗设置动作
    [alert addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]];
    //显示弹窗
    [self presentViewController:alert animated:YES completion:nil];
}
#pragma mark - cell的行高
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 60;
}

#pragma mark - ⭐️ SearchBar数据源方法 ⭐️
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    //拿到搜索框中输入的内容,在固定的数组_fixedArr中寻找
    //判断输入的内容长度是否大于0
    if(searchText.length > 0){
        //如果输入的内容长度大于0,先要移除显示数据数组的所有元素
        [_displayArr removeAllObjects];
        //拿到输入的内容去固定数组_fixedArr寻找
        for (NSString *tempText in _fixedArr) {
            //将拿到输入的内容与固定数组_fixedArr中的元素对比,且不区分大小写
            //NSCaseInsensitiveSearch:不区分大小写
            NSRange textRange = [tempText rangeOfString:searchText options:NSCaseInsensitiveSearch];
            //如果获取到相同的内容
            if (textRange.length > 0) {
                //将有相同内容的元素添加到显示的数组_displayArr中
                [_displayArr addObject:tempText];
            }
        }
        //如果输入的内容长度不大于0
    } else {
        //显示数组_displayArr的数据为:将固定数组的内容复制
        _displayArr = [_fixedArr mutableCopy];
    }
    //刷新列表
    [_tableView reloadData];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end
